/* @author cerimice */
package Dialogos.Modal.OrdenServicio;

import Sistema.Configuracion;
import Persistencia.Fachada.ListaFachada;

import Reportes.PDF.OrdenServicio.ReporteGenerarCierreOrdenServicio;
import java.util.Date;
import java.util.logging.Logger;

import com.vaadin.ui.Button;
import com.vaadin.ui.Window;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.PopupDateField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.themes.BaseTheme;
import com.vaadin.terminal.ThemeResource;
import com.vaadin.terminal.StreamResource;

public class ReporteCierreOrdenServicioDlg extends Window
    {
    private ListaFachada    objLista;
    private PopupDateField  fechaInicio,fechaFinal;
    private Button          generar,cancelar;
    
    public ReporteCierreOrdenServicioDlg()
        {
        objLista = new ListaFachada();
        agregarComponentes();
        }
    
    private void agregarComponentes()
        {
        fechaInicio = new PopupDateField("Fecha de Inicio");
            fechaInicio.setValue(new java.util.Date());
            fechaInicio.setResolution(PopupDateField.RESOLUTION_DAY);
            fechaInicio.setWidth("200px");
        fechaFinal = new PopupDateField("Fecha de Final");
            fechaFinal.setValue(new java.util.Date());
            fechaFinal.setResolution(PopupDateField.RESOLUTION_DAY);
            fechaFinal.setWidth("200px");
        generar = new Button();
            generar.setWidth("32px");
            generar.setIcon(new ThemeResource("icons/personal/aceptar.png"));
            generar.setStyleName(BaseTheme.BUTTON_LINK);
            generar.setDescription("Generar Reporte");
            generar.addListener(new Button.ClickListener() {@Override public void buttonClick(Button.ClickEvent event){generarReporte();}});
        cancelar = new Button();
            cancelar.setWidth("32px");
            cancelar.setIcon(new ThemeResource("icons/personal/cancelar.png"));
            cancelar.setStyleName(BaseTheme.BUTTON_LINK);
            cancelar.setDescription("cerrar dialogo");
            cancelar.addListener(new Button.ClickListener() {@Override public void buttonClick(Button.ClickEvent event){cancelarReporte();}});
        
        VerticalLayout principal = new VerticalLayout();
            principal.setWidth("430px");
            HorizontalLayout datosReporte = new HorizontalLayout();
                datosReporte.setCaption("SELECCIONE LAS FECHAS CORRECTAS");
                datosReporte.addComponent(fechaInicio);
                datosReporte.addComponent(fechaFinal);
            HorizontalLayout botonesReporte = new HorizontalLayout();
                botonesReporte.addComponent(generar);
                botonesReporte.addComponent(cancelar);
            principal.addComponent(datosReporte);
            principal.addComponent(botonesReporte);
            principal.setComponentAlignment(datosReporte,Alignment.TOP_CENTER);
            principal.setComponentAlignment(botonesReporte,Alignment.TOP_CENTER);
        
        this.addComponent(principal);
        this.setWidth("450px");
        this.setCaption("Reporte Cierres para ordenes de servicio");
        this.setModal(true);
        }
    
    private void cancelarReporte()
        {this.close();}
    
    private void generarReporte()
        {
        try
            {
            Date inicio = (Date)fechaInicio.getValue();
            Date finali = (Date)fechaFinal.getValue();
        
            if(finali.before(inicio)){getWindow().showNotification("Reporte Cierre Orden Servicio...","Por favor selecciones las fechas correctamente..",Notification.TYPE_WARNING_MESSAGE); return;}
            
            Window window = new Window();
                ((VerticalLayout) window.getContent()).setSizeFull();
                window.setResizable(false);
                window.setWidth("800");
                window.setHeight("600");
                window.center();
                window.setModal(true);
            Embedded e = new Embedded();
                e.setSizeFull();
                e.setType(Embedded.TYPE_BROWSER);
            StreamResource resource = new StreamResource(new ReporteGenerarCierreOrdenServicio(objLista.listaCierreOrdenServicio(inicio,finali),inicio,finali),"reporteCierreOrdenes"+System.currentTimeMillis()+".pdf",this.getApplication());
                resource.setMIMEType("application/pdf");
                e.setSource(resource);
            window.addComponent(e);
            this.getApplication().getMainWindow().addWindow(window);
            }
        catch (Exception ex)
            {
            getWindow().showNotification("Seguimiento Orden de Servicio...","Por favor Seleccione un estado de Orden de Servicio.",Notification.TYPE_WARNING_MESSAGE);
            Logger.getLogger(this.getClass().getName()).log(Configuracion.nivelLoggin(),ex.getMessage());
            return;
            }
        }
    }
